home *** CD-ROM | disk | FTP | other *** search
-
- function updateAnswerCache(answer)
- {
- setVariable('ans', answer);
- if (arguments.length===1) {
- while (getVariableIndex('ans'+currentAnswerNumber)!=-1) {
- currentAnswerNumber++;
- }
- setVariable('ans'+currentAnswerNumber, answer);
- currentAnswerNumber++;
- }
- }
- function setVariableInCacheDisplay(answerToDisplay, answerName)
- {
- if ((answerToDisplay.toString()).length>9)
- answerToDisplay=answerToDisplay.toPrecision(5);
- if (commaLocale) {
- answerToDisplay=answerToDisplay.toString();
- answerToDisplay=answerToDisplay.replace('.',',');
- }
- if (document.getElementById('cache'+answerName)) {
- document.getElementById('cache'+answerName).innerHTML=answerName+'= '+answerToDisplay;
- } else {
- variableCacheDiv.innerHTML+="<div id='cache"+answerName+"' class='variableCacheVariableDiv' onclick=\"addVariableToMainDisplay('"+answerName+"');\">"+ answerName +'= '+answerToDisplay+'</div>';
- }
- updateVariableCacheDivScrollArea();
- }
- function formatWithGlobalPrecision(number)
- {
- if (preferencesPrecision && (number.toString()).length>preferencesPrecision) {
- number=parseFloat(number);
- number=number.toPrecision(preferencesPrecision);
- }
- return number;
- }
- function formatAnswerForLocale(answerString)
- {
- if (commaLocale) {
- answerString=answerString.toString();
- answerString=answerString.replace(/,/g,' ');
- answerString=answerString.replace(/\./g,',');
- }
- return answerString;
- }
- function formatAnswerForDisplay()
- {
- var masterNumber=arguments[0];
- var currentFSE=preferencesAnswerFormatting;
- if (arguments.length==2)
- currentFSE=arguments[1];
- masterNumber=masterNumber.toString();
- var decimalLocation, formattedNumber, decimal, baseNumberLength, baseNumber, engFrontLength, formattedAfterDecimal;
- var exponent=0, negativeSign='', exponentFound=false, i=0;
- if (masterNumber.search('e')!=-1) {
- exponentFound=true;
- baseNumber=masterNumber.substring(0, masterNumber.indexOf("e"));
- exponent=parseInt(masterNumber.substring(masterNumber.indexOf("e")+1));
- } else {
- baseNumber=masterNumber;
- exponent=0;
- }
- if (baseNumber=="0") {
- return "0";
- }
- decimalLocation=baseNumber.indexOf('.');
- if (decimalLocation!=-1) {
- formattedAfterDecimal=getRidOfDoublePrecisionErrors(baseNumber.substring(decimalLocation+1));
- if (formattedAfterDecimal=="0") {
- baseNumber=parseInt(baseNumber.substring(0, decimalLocation))+1;
- baseNumber=baseNumber.toString();
- } else if (formattedAfterDecimal=="") {
- baseNumber=baseNumber.substring(0, decimalLocation);
- } else {
- baseNumber=baseNumber.substring(0, decimalLocation)+'.'+formattedAfterDecimal;
- }
- }
- if (currentFSE===1) {
- if (exponentFound)
- return baseNumber+'e'+exponent;
- else {
- if (preferencesThousandsSeperators) {
- return formatWithThousandsSeperators(baseNumber);
- } else {
- return baseNumber;
- }
- }
- }
- if (baseNumber.charAt(0)=='-') {
- negativeSign='-';
- baseNumber=baseNumber.substr(1);
- }
- if (baseNumber.indexOf(".")!=-1) {
- decimalLocation=baseNumber.indexOf('.');
- baseNumber=baseNumber.replace(/\./,'');
- exponent=exponent+decimalLocation-baseNumber.length;
- while (baseNumber.charAt(i++)=='0');
- baseNumber=baseNumber.substring(i-1);
- }
- switch(currentFSE) {
- case 2:
- if (baseNumber.length=="1")
- formattedNumber=baseNumber+'.e'+exponent;
- else {
- exponent=exponent+baseNumber.length-1;
- formattedNumber=baseNumber.charAt(0)+'.'+baseNumber.substr(1)+'e'+exponent;
- }
- break;
- case 3:
- baseNumberLength=baseNumber.length;
- engFrontLength=(baseNumber.length+exponent)%3;
- if (!engFrontLength)
- engFrontLength=3;
- else if (engFrontLength<0)
- engFrontLength+=3;
- while (baseNumber.length<engFrontLength)
- baseNumber=baseNumber+'0';
- exponent=exponent+baseNumberLength-engFrontLength;
- if (baseNumberLength<engFrontLength)
- formattedNumber=baseNumber+'e'+exponent;
- else
- formattedNumber=baseNumber.substring(0,engFrontLength)+'.'+baseNumber.substring(engFrontLength)+'e'+exponent;
- break;
- }
- formattedNumber=negativeSign+''+formattedNumber;
- return formattedNumber;
- }
- function formatWithThousandsSeperators(number)
- {
- number=number.toString();
- var front=number, back='', correction, newFront='';
- if (number.indexOf('.')!=-1) {
- front=number.substring(0, number.indexOf('.'));
- back=number.substring(number.indexOf('.'));
- }
- if (front.length<4)
- return number;
- correction=3-(front.length)%3;
- for (i=0; i<front.length; i++) {
- if (i && !((i+correction)%3)) {
- newFront=newFront+','+front.charAt(i);
- } else {
- newFront=newFront+''+front.charAt(i);
- }
- }
- number=newFront+''+back;
- return number;
- }
- function formatBinaryNumber(binaryNumber)
- {
- var i, formattedBinaryNumber='', binaryLength, binaryModulus;
- if (parseInt(binaryNumber)<0)
- return 'Error, less than 0';
- binaryNumber=binaryNumber.toString();
- binaryLength=binaryNumber.length;
- binaryModulus=4-binaryLength%4;
- if (binaryModulus!=4) {
- for (i=0; i<binaryModulus; i++) {
- binaryNumber='0'+binaryNumber;
- }
- }
- binaryLength-=4;
- for (i=0; i<binaryLength; i+=4) {
- formattedBinaryNumber=formattedBinaryNumber+binaryNumber.substr(i,4) + ' ';
- }
- formattedBinaryNumber=formattedBinaryNumber+''+binaryNumber.substr(i,4);
- return formattedBinaryNumber;
- }
- function formatHexNumber(hexNumber)
- {
- return '0x'+hexNumber;
- }
- function formatOctNumber(octNumber)
- {
- return '0'+octNumber;
- }
- function formatPercentNumber(percentNumber)
- {
- return percentNumber+'%';
- }
- function getRidOfDoublePrecisionErrors(number)
- {
- var bleh=parseInt(number, 10);
- var stringNumber=number.toString();
- var leadingZeros, i;
- var replaceRegEx=new RegExp('9{6,}\\d{1,3}\\z');
- var searchResults=stringNumber.search(replaceRegEx);
- if (searchResults!=-1 && searchResults!==0) {
- i=0;
- while (stringNumber.charAt(i++)=='0');
- i--;
- leadingZeros=i;
- if (leadingZeros) {
- bleh=parseInt(number.substring(leadingZeros), 10);
- searchResults-=leadingZeros;
- }
- number=bleh.toPrecision(searchResults);
- stringNumber=number.toString();
- searchResults=stringNumber.indexOf('e');
- if (searchResults!=-1) {
- number=stringNumber.substring(0, searchResults);
- number=number.replace('.','');
- }
- for (i=0; i<leadingZeros; i++) {
- number='0'+number;
- }
- return number;
- } else if (searchResults===0) {
- number='0';
- return number;
- }
- replaceRegEx=new RegExp('0{6,}\\d{1,3}\\z');
- searchResults=stringNumber.search(replaceRegEx);
- if (searchResults!=-1) {
- number = stringNumber.substring(0, searchResults);
- return number;
- }
- return number;
- }
-